$(function() {
   init_accordian();
});

function init_accordian()
{
     $(".accordian .root").unbind();
     $(".accordian .root").click(function(){
        if($(this).next(".node").length>0&&$(this).next(".node").is(":hidden"))
        {
            $(this).parents(".accordian").find(".node").slideUp("fast");
            $(this).nextUntil('.root').slideDown("fast");
        }
        else if($(this).next(".node").length>0&&$(this).next(".node").is(":hidden")==false)
        {
            $(this).nextUntil('.root').slideUp("fast");
        }
    });
}

(function($){
    $.fn.expandAll = function(){
        $(this).each(function() {
            if($(this).is(".accordian")==false){ 
                alert("Only those whose class is accordian can call expandAll");
                return false;
            }else
            {
                $(this).find(".root").each(function(){
                    if($(this).next(".node").length>0&&$(this).next(".node").is(":hidden"))
                    {
                        $(this).nextUntil('.root').slideDown("fast");
                    }  
                })
            }
        });
    };
    
    $.fn.collapseAll = function(){
        $(this).each(function() {
            if($(this).is(".accordian")==false){ 
                alert("Only those whose class is accordian can call collapseAll");
                return false;
            }
            else
            {
                $(this).find(".root").each(function(){
                    if($(this).next(".node").length>0&&$(this).next(".node").is(":hidden")==false)
                    {
                        $(this).nextUntil('.root').slideUp("fast");
                    }
                });
            }
        });
    };
})(jQuery);